Ext.define('AgenteNET.controller.Dispositivo', {
	extend : 'Ext.app.Controller',
	views : [ 'MainLayer'],

	mainLayer : null,
	init : function() {
		this.control({
			'window' : {
				afterrender: function(self) {
					this.showInfo(self._recurso);
	                this.showMenu(self._recurso);
		            self.el.on('click', function(event,el,window) {
		                this.showInfo(window._recurso);
		                this.showMenu(window._recurso);
		            },this,self); 
			    }, 
			},
		});
		this.mainLayer = this.getView('MainLayer').create();
		this.inicializado=true;
	},
	
	showMenu:function(recurso){
		var menu=[],layerControl=null,menuControle=null,menuLayer=null;
		/*menu[menu.length]={
			recurso : recursos.data.items[i],
			app : this.application,
			text : recursos.data.items[i].get('rotulo'),
			icon : recursos.data.items[i].get('icone'),
			executar:recursos.data.items[i].get('nome'),
		};*/

		menuControle = Ext.getCmp('menuControle');
		//if(menu.length>0){
			menuLayer=Ext.getCmp('menuControlerLayer');
			menuLayer.removeAll(true);
			menuLayer.add(menu);
			menuControle.show();
		/*}else{
			menuControle.hide();
		}*/
	},
	
	showInfo:function(recurso){
		var infoControle = Ext.getCmp('infoControle');
		infoControle.removeAll(true);
		if(recurso.get('descricao')!=''){
			infoControle.add({frame:false,border:false,items:{frame:false,border:false,padding : '10 10 10 10',html:recurso.get('descricao')}});
			infoControle.show();
		}else{
			infoControle.hide();
		}
	},
	
	/**
    * @id DispositivoMenuGlobal
    * @nome dispositivo.MenuGlobal
    * @rotulo Atualizar menu
    * @titulo Atualizando menu principal
    * @descricao Atualização online do menu principal do sistema
    * @icone 
    * @video 
    * @situacao A
    */
	MenuGlobal : function(){
		this.atualizar();
	},

	atualizar : function() {
		var conexao = this.application.getController('Conexao').conexao;
		var menuGlobal = this.mainLayer.down('menuGlobal');
		menuGlobal.removeAll(true);
		var layerUser = Ext.getCmp('UserLayer');
		layerUser.removeAll(true);
		
		if(Ext.util.Cookies.get('token')){
			if(conexao){
				conexao.menuGlobal().each(function(model) {
					if (!menuGlobal.down('button[recurso="' + model.get('nome') + '"]')) {
						menuGlobal.add({
							app : this.application,
							text : model.get('rotulo'),
							icon : model.get('icone'),
							executarRecurso : model.get('nome'),
						});
					}
				}, this);
				if (!menuGlobal.down('button[controle="Autenticacao"][funcao="desconectar"]')) {
					menuGlobal.add(['->',{
						app : this.application,
						text : 'Desconectar',
						controle : 'Autenticacao',
						funcao : 'desconectar',
					}]);
				}
					var userview = layerUser.add(Ext.create('AgenteNET.view.Usuario'));
						userview.down('image').setSrc('tema/default/images/fotoUsuario.jpg');
						userview.down('text[id="usuarioNome"]').setText(conexao.usuario().get('nome'));
						userview.down('text[id="usuarioIp"]').setText(conexao.get('ip'));
			}
		}
	},
	componente:function(chamadoPor,cmp){
		var work=Ext.getCmp('WorkLayer');
		var panel=work.add({
			title:chamadoPor._recurso.get('titulo'),
			alias:chamadoPor._recurso.get('nome'),
			frame : true,
			border : true,
			chamadoPor:chamadoPor.getEl(),
			_recurso:chamadoPor._recurso,
			items:cmp,
			//margin : '10 10 10 10',
			padding : '0 0 0 0 ',
			region : 'center',
			xtype:'panel',
			layout:'fit',
		});
		this.ativarRecurso(panel);
		return panel;
	},
	window:function(chamadoPor,cmp,maximized){
		if(maximized==undefined)maximized=false;
		cmp.getDockedItems('toolbar')[0].add({
			text : 'Fechar',
			controle : 'Dispositivo',
			funcao : 'fechar',
		});
		var win=Ext.create('Ext.window.Window',{
			title:chamadoPor._recurso.get('titulo'),
			alias:chamadoPor._recurso.get('nome'),
			border : true,
			//chamadoPor:chamadoPor,
			_recurso:chamadoPor._recurso,
			items:cmp,
			closable : true,
			layout : 'fit',
			resizable:false,
			closeAction : 'destroy',
			maximizable:true,
			maximized:maximized,
			minimizable:true,
			//animateTarget: chamadoPor,
			layout:'fit'
		});
		Ext.getCmp('WorkLayer').add(win);
		win.show();
		return win;
	},
	recursoAtivo:null,
	ativarRecurso:function(cmp){
		this.recursoAtivo=cmp;
	},
	fechar:function(el){
		el.up('window').close();
		return el;
	},
});
